﻿using System;
using System.Collections.Generic;
using System.Reflection;

namespace Myotragus.Data.Emit
{
	public interface IDynamicType
	{
		void DefineAutomaticProperty(string propertyName, Type propertyType);

		void DefineDefaultConstructor(MethodAttributes attributes);

		void AddInterfaceImplementation(Type interfaceType);

		void SetCustomAttribute(ConstructorInfo attributeCtor, params object[] attributeParams);

		void SetCustomAttribute(ConstructorInfo attributeCtor, IEnumerable<object> attributeParams);

		Type CreateType();

		IEnumerable<Type> Interfaces { get; }

		Type BaseType { get; }

		string TypeName { get; }

		TypeAttributes Attributes { get; }
	}
}